import os;
#定义展示功能区域
tips=('1:查看余额','2:存钱','3:取钱','4修改密码','5：退出系统');
#定义用户列表
userList=[
{"sid":1,"name":"taojian","money":26,"password":"123456"},
{"sid":2,"name":"xudandan","money":26,"password":"123456"},
{"sid":3,"name":"wangwang","money":26,"password":"123456"},
{"sid":4,"name":"q","money":26,"password":"q"}
];

##学院信息管理
#获取用户是否存在 和校验登录
#_list 银行用户列表
#type 1:检验用户是否存在 2：检验登录状态
#name 用户名称
#pwd 用户密码
def getUser(_list,name,pwd='',type=1):
	isFind = False;
	#不需要密码，检查用户是否存在
	for index in range(len(_list)):
		userObj=_list[index];
		if type==1:
			if(userObj['name'] == name):
				isFind = True;
				break;
		else:
			if(userObj['name'] == name and userObj['password'] == pwd):
				isFind=True;
				break;
	return isFind;



##学院信息管理，tips:需要展示的功能菜单
#tips 展示功能列表
def showInfo(tips=tips):
	print('');
	input('按回车键继续：');
	print('='*20+'银行系统信息管理'+'='*20);
	for k in range(len(tips)):
		if (k+1)%2==0:
		   #偶数个折行
		    print('{:>4}{}'.format("",tips[k]));
		else:
			print('%s'%tips[k],end="");
	print('');
	print('='*52);
	print('');	

#展示余额信息
#name 用户名
#用户列表
def showMoney(name,list):
	isFind=False;
	#先找到该用户信息
	for index in range(len(list)):
		userObj=list[index];
		if(userObj['name']==name):
			#找到下标并取钱
			isFind = True;
			print('');
			print('您的余额为：{}元'.format(userObj['money']));
			break;
			if(isFind == False):
				print('对不起，未找到您的用户信息！');

#存钱,取钱
#list 用户列表
#name 查询的用户名
#type ’add'存钱 ‘get’取钱
def operateMoney(list,name,type):
	print('');
	money=int(input('请输入金额:'));
	#设定找到的标记
	isFind=False;
	for index in range(len(list)):
		userObj=list[index];
		if(userObj['name']==name):
			#找到下标并取钱
			isFind = True;
			if(type == 'add'):
				userObj['money']+=money;
			else:
				#余额大于取的钱才能取
				if(userObj['money']>=money):
					userObj['money']-=money;
				else:
					print('你又没这么多钱，取你个鬼啊！')
			print('');
			print('操作成功啦！');
			#展示余额
			showMoney(name,list);
			#找到，取钱掉退出循环
			break;
	if(isFind == False):
		print('对不起，未找到该银行系统信息！');
		getMoney(list);

#更新密码
#list 用户列表
#name 当前用户名称
def updatePassword(list,name):
	password=str(input('请确认输入{}的密码：'.format(name)));
	#先校验输入的密码是否准确
	isSuccess=getUser(list,name,password,2);
	#如果密码正确，提示输入新密码
	if(isSuccess == True):
		new_password=str(input('请输入新密码：'));
		result='fail';
		for index in range(len(list)):
			userObj=list[index];
			if(userObj['name']==name):
				#找到下标并修改密码
				userObj['password']=new_password;
				result='success';
				print('密码修改成功啦，请重新登录！');
				break;
		if(result == 'success'):
			login(list);
	else:
		updatePassword(list,name);


#登录接口
#_list 用户列表
#tips 提示信息
#name 名称
#password 用户密码
def login(_list,tips=tips):
	print('='*10+'欢迎进入银行系统，请先登录'+'='*10);
	name=input('请输入您的用户名:');
	password=input('请输入您的密码:');
	isSuccess=getUser(_list,name,password,2);
	if isSuccess==True:
		print('恭喜您，登录成功！！');
		showInfo(tips);
		number_input=int(input('请选择操作序列号:'))
		while True:
			if(number_input==1):
				print('='*20+'余额信息'+'='*20);
				showMoney(name,_list);
				showInfo(tips);
				number_input=int(input('请继续输入序列号：'));
			elif(number_input==2):
				print('='*20+'存钱'+'='*20);
				operateMoney(_list,name,'add');
				showInfo(tips);
				number_input=int(input('请继续输入序列号：'));
			elif(number_input==3):
				print('='*20+'取钱'+'='*20);
				operateMoney(_list,name,'get');
				showInfo(tips);
				number_input=int(input('请继续输入序列号：'));
			elif(number_input==4):
				print('='*20+'修改密码'+'='*20);
				updatePassword(_list,name);
				showInfo(tips);
			elif(number_input==5):
				print('='*15+'退出系统，再见'+'='*15);
				os._exit(0);
				break;
			else:
				print('输入不合法！');
				number_input=int(input('请继续输入序列号：'));

	else:
		print('用户名不存在或密码不正确！')


#init展示用户信息
login(userList,tips);
